'use strict';

const BaseController = require('./base.js');

class GoodsTypeAttributeController extends BaseController {

    async index() {
 
        // 显示对应类型的属性

        // 获取当前属性的类型id  
        var cate_id = this.ctx.request.query.id;
        // console.log(cate_id)

        // 获取当前的类型
        var goodsType = await this.ctx.model.GoodsType.find({"_id": cate_id})

        // 关联查询方法为 mongdb 原生查询方法  需要通过 mongoose 将字符串 _id 转化为 ObjectId
        var result = await this.ctx.model.GoodsTypeAttribute.aggregate([
            {
                $lookup:{
                    from: 'goods_type',          // 关联表 
                    localField: 'cate_id',           // 本表id
                    foreignField: '_id',   // 被关联表 对应的 id
                    as: 'goods_type'
                }
            },
            {
                $match: {
                    "cate_id" : this.app.mongoose.Types.ObjectId(cate_id)
                }
            }
        ])

        await this.ctx.render('admin/goodsTypeAttribute/index', {
            list: result,
            cate_id: cate_id,
            goodsType: goodsType[0]
        });
    }

    // 添加商品类型属性
    async add() {
        
        let cate_id = this.ctx.request.query.id;
        let goodsTypes = await this.ctx.model.GoodsType.find({});

        await this.ctx.render('admin/goodsTypeAttribute/add', {
            cate_id: cate_id,
            goodsTypes: goodsTypes
        })
    }

    // 添加商品类型属性
    async doAdd() {

        let goodsAttr = new this.ctx.model.GoodsTypeAttribute(this.ctx.request.body);
        await goodsAttr.save();
        await this.success('/admin/goodsTypeAttribute?id=' + this.ctx.request.body.cate_id, '增加商品类型属性成功');
    }

    // 编辑商品类型属性
    async edit() {
        let id = this.ctx.query.id;
        let result = await this.ctx.model.GoodsTypeAttribute.find({"_id":id})
        let goodsTypes = await this.ctx.model.GoodsType.find({});
        await this.ctx.render('admin/GoodsTypeAttribute/edit', {
            list: result[0],
            goodsTypes: goodsTypes
        })
    }

    // 编辑商品类型属性
    async doEdit() {

        var _id = this.ctx.request.body._id;

        await this.ctx.model.GoodsTypeAttribute.updateOne({"_id":_id}, this.ctx.request.body)
        await this.success('/admin/goodsTypeAttribute?id=' + this.ctx.request.body.cate_id, '编辑类型属性成功');
    }
}

module.exports = GoodsTypeAttributeController;
